package 哈希表;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/10/9 21:27
 */
public class 两数之和为sum的个数 {



    public static void main(String[] args) {

        List<Integer> integers =  Arrays.asList(1, 2, 3, 4, 5);
        int sum = 6;
        long l = countPairs(integers, 5, 6);
        System.out.println(l);

    }
    /*
      这个题从某种意义上来说， 还有点 抽象
     数组中元素为  1，1，3，3 ， 求 sum 为 4 的
     */
    public static long countPairs (List<Integer> A, int n, int sum) {
        Map<Integer,Integer> map = new HashMap<>();
        long ans = 0;
        for (int i = 0; i < n; i++) {
            int x = A.get(i);
            if(map.containsKey(sum - x)){
                ans += map.get(sum - x);
            }
            map.put(x,map.getOrDefault(x,0) + 1);
        }


        return ans;
    }
}
